#ifndef __hash_h__
#define __hash_h__


struct MyHashMap_s;

//下面这个hash表结构，需要参赛者自己定义。
typedef struct MyHashMap_s MyHashMap;


MyHashMap *myHashMapCreate(uint64_t max_elem);

// 向hash表中添加元素，键值分别为key/value。
// 成功返回0。
// 如果该key在hash表中已经存在，返回-EEXIST；
// 如果hash表中元素数量超过了max_elem，则返回-ENOMEM；
int myHashMapPut(MyHashMap *obj, uint64_t key, uint64_t value);

//在hash表中查找键为key的元素，并返回对应的值。 如果key不存在，则返回(uint64_t)-1。
uint64_t myHashMapGet(MyHashMap *obj, uint64_t key);

//从hash表中删除键为key的元素。
//如果成功返回0
//如果key不存在，则返回-ENOENT
int myHashMapRemove(MyHashMap *obj, uint64_t key);

//销毁hash表，并释放该Hash表所有占用的内存。
void myHashMapFree(MyHashMap *obj);

#endif // __hash_h__


